<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>LPC (Programmiersprache)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/LPC_(Programmiersprache)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-LPC_Programmiersprache rootpage-LPC_Programmiersprache skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">LPC (Programmiersprache)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>LPC</b> ist eine <a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierte</a> <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a>, in der Syntax ähnlich wie <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> oder <a href="C%2B%2B" title="C++">C++</a>, für Netzwerk-Textabenteuerspiele (<a href="Multi_User_Dungeon" title="Multi User Dungeon">Multi User Dungeons</a>, kurz MUDs).
</p><p>LPC ist eine Mischung aus Interpreter- und Compilersprache. LPC-MUDs erlauben in der Regel, zur <a href="Laufzeit_(Informatik)" title="Laufzeit (Informatik)">Laufzeit</a> Programme hinzuzufügen, zu starten und auch nachträglich zu ändern, ohne das ganze Spiel neu zu starten. Der LPC-Code wird von einem <a href="Compiler" title="Compiler">Compiler</a> zuerst in einen <a href="Bytecode" title="Bytecode">Bytecode</a> umgewandelt und danach von einem <a href="Interpreter" title="Interpreter">Interpreter</a> ausgeführt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2></div>
<p>Die Bezeichnung LPC leitet sich vom Erfinder der Sprache, Lars Pensjö, ab.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Pensjö entwickelte LPC Anfang der 1990er-Jahre und orientierte sich dabei an der Programmiersprache C. Von der ähnlichen Syntax abgesehen gibt es jedoch nur wenige Gemeinsamkeiten der beiden Sprachen.
</p><p>Bei den ursprünglichen Implementierungen von LPC waren <a href="Compiler" title="Compiler">Compiler</a> und <a href="Bytecode" title="Bytecode">Bytecode</a>-<a href="Interpreter" title="Interpreter">Interpreter</a> Bestandteile eines einzelnen Programms, das grundlegende, für den Betrieb eines Multi User Dungeons notwendige Funktionalität zur Verfügung stellte, den sogenannten <i>Gamedriver</i> oder kurz <i>Driver</i>. Auch das MUD Amylaar trug wesentliche Teile zum Treiber bei. Dazu gehört vor allem der Betrieb als <a href="Server" title="Server">Server</a>, zu dem mit einem <a href="Telnet" title="Telnet">Telnet</a>- oder einem speziellen MUD-<a href="Client" title="Client">Client</a> eine Verbindung hergestellt werden kann. Diese Software wurde unter dem Namen LPMud verbreitet; eine moderne Weiterentwicklung auf Basis des ursprünglichen LPMud-Quellcodes hört auf die Bezeichnung LDMud (nach den Initialen des Maintainers). Eine weitere Implementierung desselben Konzeptes inklusive der Sprache LPC ist MudOS.
</p><p>Aus LPC ging die unabhängige Scriptsprache <a href="Pike_(Programmiersprache)" title="Pike (Programmiersprache)">Pike</a> hervor. Diese hat bisher keinen hohen Verbreitungsgrad erreicht.
</p>
<div class="mw-heading mw-heading2"><h2 id="Merkmale">Merkmale</h2></div>
<p>LPC unterstützt die folgenden Programmiertechniken:
</p>
<ul><li><a href="Prozedurale_Programmierung" title="Prozedurale Programmierung">Prozedurale Programmierung</a></li>
<li><a href="Modulare_Programmierung" title="Modulare Programmierung">Modulare Programmierung</a></li>
<li><a href="Strukturierte_Programmierung" title="Strukturierte Programmierung">Strukturierte Programmierung</a></li>
<li><a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">Objektorientierte Programmierung</a> (mit <a href="Vererbung_(Programmierung)" title="Vererbung (Programmierung)">Mehrfachvererbung</a>)</li>
<li><a href="Datentyp" title="Datentyp">Programmierung mit selbstdefinierten Datentypen</a> (<a href="Abstrakter_Datentyp" title="Abstrakter Datentyp">abstrakte Datentypen</a>)</li>
<li><a href="Datentyp" title="Datentyp">Schwach typisierte</a> <a href="Variable_(Programmierung)" title="Variable (Programmierung)">Variablen</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Unterschiede_zu_anderen_C-ähnlichen_Sprachen"><span id="Unterschiede_zu_anderen_C-.C3.A4hnlichen_Sprachen"></span>Unterschiede zu anderen C-ähnlichen Sprachen</h2></div>
<p>Die grundlegende Syntax von LPC entspricht der der Sprache C. Dazu gehören die verwendeten Zeichen zur Kennzeichnung von Blöcken, Funktionen, Argumenten und Argumentlisten sowie die Benutzung des <a href="Semikolon" title="Semikolon">Semikolons</a> als Endzeichen eines Statements.
</p><p>Im Unterschied zu C kennt LPC keine stark typisierten Variablen. Eine <a href="Variable_(Programmierung)" title="Variable (Programmierung)">Variable</a> kann zwar mit einem vorher bestimmten Typ angelegt werden, dann jedoch trotzdem einen Wert eines anderen Typs aufnehmen. Zusätzlich existiert der Typ <i>mixed</i> für untypisierte Variablen.
</p><p>Das wirkt sich auch auf Rückgabewerte und Parameter von Funktionen aus: im Normalfall müssen in der <a href="Signatur_(Programmierung)" title="Signatur (Programmierung)">Funktionssignatur</a> weder die Argumente noch Rückgabewert mit Typen versehen werden. Man kann jedoch durch Angabe von <a href="Pr%C3%A4prozessor" title="Präprozessor">Präprozessor</a>-Direktiven eine Überprüfung auf gültige Argumente zum Übersetzungszeitpunkt erzwingen:
</p>
<ul><li><i>#pragma strong_types</i> – Typen für Argumente und Rückgabewert müssen angegeben werden</li>
<li><i>#pragma strict_types</i> – der Rückgabewert von an fremden Objekten gerufenen Methoden muss gecastet werden</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Die_Klassenbibliothek_eines_MUDs">Die Klassenbibliothek eines MUDs</h3></div>
<p>Die Sprache LPC kennt nur eine geringe Zahl von Standardfunktionen (<i>efuns</i>). Diese sind im ausführenden Programm (<i>gamedriver</i>), also beispielsweise LPMud oder LDMud, implementiert. Zusätzlich hat jedes MUD, das mit einer solchen Software betrieben wird, eine eigene Klassenbibliothek (<i>MUDlib</i>). Die MUDlib enthält Schnittstellen, mit denen der gamedriver einen Teil der Verantwortung an sie zurückgeben kann. Dazu gehört unter anderem das Erzeugen eines Spielerobjektes für einen einloggenden Spieler oder die Fehlerbehandlung. Es gibt hierbei keine Standard-MUDlib, die von allen MUDs genutzt würde. Einige sich im Einsatz befindliche MUDlibs sind jedoch <a href="Open_Source" title="Open Source">Open Source</a> oder auf andere Weise frei verwendbar. Aufbauend auf wenigen frei verfügbaren MUDlibs sind mehrere weit verbreitete MUDlib-Zweige entstanden, die in vielen MUDs eingesetzt werden. Im deutschsprachigen Raum sind beispielsweise Abkömmlinge der MUDlibs der MUDs <a href="MorgenGrauen_(Computerspiel)" title="MorgenGrauen (Computerspiel)">MorgenGrauen</a> einerseits und <a href="UNItopia" title="UNItopia">UNItopia</a> andererseits verbreitet.
</p>
<div class="mw-heading mw-heading3"><h3 id="Unterschiede_bezogen_auf_die_Laufzeitumgebung">Unterschiede bezogen auf die Laufzeitumgebung</h3></div>
<p>Von der sprachlichen Seite abgesehen unterscheidet sich LPC auch in mehreren Punkten in Bezug auf die Definition der <a href="Laufzeitumgebung" title="Laufzeitumgebung">Laufzeitumgebung</a> von anderen <a href="Programmiersprache" title="Programmiersprache">Programmiersprachen</a>. Durch die ursprüngliche Zielsetzung als Sprache eines Online-Rollenspiels, bei dem mehrere Entwickler mit unterschiedlichen Rechten eigenen Code einbringen können, enthält die Laufzeitumgebung beispielsweise sogenannte <i>privilegierte Funktionen</i>, die nur nach vorheriger Überprüfung durch ein <i>Master-Objekt</i> des MUDs von einem normalen Objekt aufgerufen werden können.
</p><p>Aktuelle LPC-Laufzeitumgebungen unterstützen keine <a href="Thread_(Informatik)" title="Thread (Informatik)">Threads</a>. In einem einzelnen Thread werden nacheinander alle anfallenden Aufgaben erledigt. Dadurch ergibt sich notwendigerweise eine Begrenzung der Laufzeit, die für die Behandlung eines zusammenhängenden Ereignisses gesetzt ist. In LDMuds kann diese Begrenzung dynamisch für einzelne Funktionsaufrufe aufgehoben oder gesetzt werden.
</p><p>Eine weitere Besonderheit ist die fast vollständige Gleichwertigkeit der eingebauten Funktionen (<i>efuns</i>) mit von der Klassenbibliothek eines MUDs (<i>MUDlib</i>) vorgegebenen <i>simul_efuns</i>. Auf diese Weise ist es möglich, Standardfunktionen zu überschreiben oder den Zugriff darauf zu verbieten.
</p>
<div class="mw-heading mw-heading3"><h3 id="Unterschiede_bei_der_Objektorientierung">Unterschiede bei der Objektorientierung</h3></div>
<p>LPC kennt im Gegensatz zu vielen <a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierten Programmiersprachen</a> keine Unterscheidung zwischen <a href="Klasse_(Objektorientierung)" title="Klasse (Objektorientierung)">Klassen</a> und <a href="Objekt_(Programmierung)" title="Objekt (Programmierung)">Objekten</a>. Im Normalfall wird aus einer <a href="Quelltext" title="Quelltext">Quelltext</a>-<a href="Datei" title="Datei">Datei</a> ein einzelnes Objekt erzeugt. Alle im Speicher befindlichen Objekte können jedoch dupliziert (<i>geklont / cloned</i>) werden. Der Vorgang des <i>Clonens</i> ist vergleichbar mit dem der <a href="Objekt_(Programmierung)" title="Objekt (Programmierung)">Instanziierung</a> bei anderen Programmiersprachen; allerdings sind der Klon (<i>clone</i>) und das Original (<i>blueprint</i>) gleichberechtigt und können beide theoretisch auf die gleiche Weise eingesetzt werden. Dabei ist aber zu berücksichtigen, dass das Objektuniversum der LPC-Welt jedem Objekt ein quasi-physisches „befindet-sich-in“-Attribut zuordnet (das Avatar-Objekt des Spielers befindet sich in einem Raum, die Habseligkeiten des Spielers befinden sich in diesem virtuellen Körper usw.), und dass ein Blueprint, der einmal die Welt betreten hat, zwar noch bewegt, aber nicht mehr geklont werden kann; nur wenn das Blueprint-Objekt zerstört und aus dem Quelltext neu erzeugt wird, befindet es sich wieder außerhalb der Welt. (Das Enthaltensein ist eine elementare Eigenschaft des Gamedrivers, nicht der MUDlib.)
</p>
<div class="mw-heading mw-heading3"><h3 id="Besondere_Konstrukte">Besondere Konstrukte</h3></div>
<p>LPC kennt das Konzept des <i>Shadowing</i>. Dabei handelt es sich um eine Möglichkeit, alle Zugriffe auf eine Funktion eines Objektes von außen abzufangen, beispielsweise um sie zu filtern oder ganz zu unterbinden, ähnlich dem <a href="Decorator" title="Decorator">Decorator</a>-Muster. Das Prinzip wird angewandt, indem ein Objekt mit der <i>efun</i> shadow() sich als „Schatten“ eines beliebigen anderen Objektes registriert. Bei einem Aufruf einer Funktion des Zielobjektes, der nicht innerhalb des Zielobjektes direkt geschieht, wird dann die gleichnamige Funktion im Schatten-Objekt aufgerufen, falls dieses Objekt eine solche Funktion enthält. Existiert im Schatten-Objekt keine Funktion gleichen Namens, wird der Aufruf wie ein normaler Funktionsaufruf in einem Objekt ohne Schatten behandelt. Das Schatten-Objekt hat ebenfalls die Möglichkeit, Funktionen im Zielobjekt, das es „überschattet“, aufzurufen.
</p>
<div class="mw-heading mw-heading3"><h3 id="Besondere_Datentypen">Besondere Datentypen</h3></div>
<p>Funktionen sind in LPC keine <a href="First-Class-Objekt" title="First-Class-Objekt">First-Class-Objekte</a> (Funktionen erster Ordnung). Dennoch kennt die Sprache Funktionsreferenzen. Aus der Welt der <a href="Funktionale_Programmierung" title="Funktionale Programmierung">Funktionalen Programmierung</a> entlehnt ist der Name <i>closure</i> für diesen Datentyp, in Anlehnung an den Begriff <a href="Closure_(Funktion)" title="Closure (Funktion)">Closure</a>. Die referenzierte Funktion kann auch mit der Funktion lambda() zur Laufzeit dynamisch erzeugt werden. Dabei wird aus einem <a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Array</a> von Closures und <a href="Symbol" title="Symbol">Symbolen</a> <i>zur Laufzeit</i> eine neue Funktion erzeugt, die dann, wie jede andere closure, als Wert übergeben oder als Funktion aufgerufen werden kann. Die in der LPMud-Variante LDMud eingesetzte LPC-Fortentwicklung enthält zusätzlich die Möglichkeit, zur <a href="Compilezeit" class="mw-redirect" title="Compilezeit">Compilezeit</a> Closures auf formlos angegebene Inline-Funktionen zu erzeugen. Dazu wird die sogenannte Smiley-Notation verwandt, bei der normaler LPC-Code innerhalb von (: und :) vom Compiler in eine normale Funktion des Objektes umgesetzt wird und der Ausdruck an der Stelle seines Auftretens durch eine auf diese Funktion verweisende closure ersetzt wird.
</p><p><a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Arrays</a> existieren in LPC und können im Code mit den einzelnen Elementen, durch Kommata getrennt und von ({ und }) umschlossen, erzeugt werden. Der Zugriff auf einzelne Elemente geschieht mit dem Indexoperator [] vergleichbar zu C. Zusätzlich gibt es Standardfunktionen zur Behandlung von Arrays. Arrays sind, ebenso wie andere Variablen auch, nicht typisiert. Das bedeutet, dass die Elemente eines Arrays unterschiedliche Typen haben können. Weitere Arrays sind ebenfalls als Elemente eines Arrays erlaubt. Dadurch ist es in LPC möglich, komplexe Strukturen als Arrays aufzubauen. Eine Variable, die ein Array halten können soll, wird durch einen dem Elementtyp hintangestellten <a href="Sternchen_(Schriftzeichen)" title="Sternchen (Schriftzeichen)">Asterisk</a> (*) gekennzeichnet. Dabei wird jedoch keine Typprüfung vorgenommen. Variablen vom Typ <i>mixed</i> können ebenfalls ein Array enthalten.
</p><p>LPC kennt zusätzlich außerdem sogenannte <a href="Assoziatives_Datenfeld" class="mw-redirect" title="Assoziatives Datenfeld">assoziative Arrays</a> vergleichbar mit den Wörterbüchern der Sprache <a href="Python_(Programmiersprache)" title="Python (Programmiersprache)">Python</a>. In LPC wird dafür die Bezeichnung <i>mapping</i> verwandt. Diese mappings sind als <a href="Hashtabelle" title="Hashtabelle">Hashtabelle</a> implementiert. In einem assoziativen Array kann einem Schlüsselelement ein Wert zugeordnet werden. Eine Besonderheit der assoziativen Arrays in LPC ist die pro mapping variable Anzahl von Werten pro Schlüssel. So kann ein Mapping beispielsweise zu jedem Schlüssel eine beliebige, aber innerhalb des mappings gleiche Anzahl von Werten enthalten. Um diese Werte anzusprechen, kann zusätzlich zum Schlüssel bei einer Indizierungsoperation noch ein numerischer Index angegeben werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Hallo-Welt-Programm_in_LPC">Hallo-Welt-Programm in LPC</h2></div>
<p>Das folgende Objekt gibt <i>beim ersten Laden</i> den Text „Hallo, Welt!“ aus, da die create()-Methode üblicherweise beim Laden/Clonen von Objekten automatisch aufgerufen wird.
</p>
<pre>void create() {
write("Hallo, Welt!");
}
</pre>
<div class="mw-heading mw-heading2"><h2 id="Komplexeres_Beispielobjekt">Komplexeres Beispielobjekt</h2></div>
<p>LPC wird hauptsächlich zur Beschreibung von Objekten in Rollenspielen eingesetzt. Solche Objekte sind in vielen Fällen Gegenstände, Einwohner oder Räume einer virtuellen Welt. Die <a href="Klassenbibliothek" class="mw-redirect" title="Klassenbibliothek">Klassenbibliothek</a> (MUDlib) enthält deshalb typischerweise Objekte, die ganz allgemein einen Gegenstand – oder eine bestimmte Klasse von Gegenständen – repräsentiert. Ähnliches gilt für Räume, Monster und alle anderen Objekte, die häufig in verschiedenen Variationen erzeugt werden müssen.
</p><p>Das folgende Beispiel bezieht sich auf die Anwendung von LPC zusammen mit einer vorhandenen Klassenbibliothek, die nicht zum Lieferumfang von LPMud gehört. Es implementiert einen Apfel und erbt von einem Standardobjekt, das vom Spieler essbare Nahrung implementiert. Dazu gehört unter anderem die zur Implementierung des Ess-Vorgangs im Spiel notwendige Logik. Im erbenden Objekt müssen so nur noch die Werte von Eigenschaften eingestellt werden, die im Rahmen der Möglichkeiten der Basisklasse die Auswirkungen des Verzehrs bestimmen. Die in diesem Beispiel referenzierte MUDlib stellt hierzu die Funktion SetProp() zur Verfügung. Die Namen der Eigenschaften sind dabei Präprozessor-Makros. Es ist, je nach MUD, auch üblich, auf Eigenschaften über einzelne Accessor-Funktionen zuzugreifen.
</p>
<div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">inherit</span><span class="w"> </span><span class="s">"/std/food"</span><span class="p">;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><properties.h></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><language.h></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><food.h></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">create</span><span class="p">()</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">is_clone</span><span class="p">(</span><span class="n">this_object</span><span class="p">()))</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w"> </span><span class="o">::</span><span class="n">create</span><span class="p">();</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_SHORT</span><span class="p">,</span><span class="w"> </span><span class="s">"Ein Apfel"</span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_LONG</span><span class="p">,</span><span class="w"> </span><span class="s">"Dieser Apfel ist schoen prall und rot. Er schmeckt sicher vorzueglich."</span><span class="p">);</span>
<span class="w"> </span><span class="n">AddId</span><span class="p">(</span><span class="w"> </span><span class="p">({</span><span class="s">"apfel"</span><span class="p">,</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">apfel"</span><span class="p">})</span><span class="w"> </span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_NAME</span><span class="p">,</span><span class="w"> </span><span class="s">"Apfel"</span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_GENDER</span><span class="p">,</span><span class="w"> </span><span class="n">MALE</span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_VALUE</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_WEIGHT</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_MATERIAL</span><span class="p">,</span><span class="w"> </span><span class="p">([</span><span class="w"> </span><span class="n">MAT_FRUIT</span><span class="o">:</span><span class="w"> </span><span class="mi">100</span><span class="w"> </span><span class="p">])</span><span class="w"> </span><span class="p">);</span>
<span class="w"> </span><span class="n">SetProp</span><span class="p">(</span><span class="n">P_FOOD_INFO</span><span class="p">,</span>
<span class="w"> </span><span class="p">([</span><span class="w"> </span><span class="n">F_HEAL</span><span class="o">:</span><span class="w"> </span><span class="p">({</span><span class="mi">10</span><span class="p">,</span><span class="mi">10</span><span class="p">}),</span>
<span class="w"> </span><span class="nl">F_SOAK</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span>
<span class="w"> </span><span class="nl">F_MSG</span><span class="p">:</span><span class="w"> </span><span class="s">"Du isst den leckeren roten Apfel."</span><span class="p">,</span>
<span class="w"> </span><span class="nl">F_MSG_ROOM</span><span class="p">:</span><span class="w"> </span><span class="s">"isst einen leckeren roten Apfel."</span><span class="p">])</span><span class="w"> </span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://midgardmud.de/lpc/">LPC Anfänger-Handbuch</a>: LPC-Einstieg: Programmieren lernen mit LDMud und MG/Midgard-Mudlib</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Xyllomer.de: <span class="cite"><a rel="nofollow" class="external text" href="https://www.xyllomer.de/system/lpc.php"><i>The LPC Reference Manual.</i></a><span class="Abrufdatum"> Abgerufen am 20. April 2016</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ALPC+%28Programmiersprache%29&rft.title=The+LPC+Reference+Manual&rft.description=The+LPC+Reference+Manual&rft.identifier=https%3A%2F%2Fwww.xyllomer.de%2Fsystem%2Flpc.php"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-12-20" href="https://de.wikipedia.org/wiki/?title=LPC_(Programmiersprache)&oldid=262587751">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>